#include<stdlib.h>
#include<string.h>

void insert_sort(void *arr, int num, int size, int (*cmp)(const void*num1, const void*num2)){
	int i, j;
	void *t = malloc(size);
	for(i = 1; i < num;i++){
		memcpy(t, (char *)arr + i *size, size);
		for(j = i - 1; j >= 0; j--){
			if(cmp(t, (char *)arr + j * size) < 0){
				memcpy((char *)arr + (j + 1) * size, (char *)arr + j * size, size);
			}else{
				break;
			}
		}
		memcpy((char *)arr + (j + 1) * size, t, size);
	}	
}	

void show_arr(void *arr, int num, int size, void (*pri)(const void*p)){
	int i;
	for(i = 0; i < num; i++){
		pri((char *)arr + i * size);
	}

}
